﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Jardin_Informativo_Agua_Tierra
{
    public partial class Generador
    {
        JardinInformativoBDEntities BEDE = new JardinInformativoBDEntities();
        IEnumerable<Ficha_Salud> ListaFichasSalud;
        IEnumerable<Emergencia> ListaEmergencias;
        IEnumerable<Responsable_Pago> ListaPagadores;
        IEnumerable<Conviviente> ListaConvivientes;
        IEnumerable<Recurso> ListaRecursos;
        IEnumerable<Consumo> ListaConsumos;

        public int GenCodFicha(string rut)
        {
            int a = int.Parse(rut);
            int cod = ((a / 100)*1000) + (DateTime.Now.Year % 100);
            return cod;
        }

        public int GenEdadEnMarzo(DateTime Nacimiento)
        {
            int fin = (DateTime.Now.Year * 12) + 3;   // cantidad de meses hasta marzo de este año.
            int inicio = (Nacimiento.Year * 12) + Nacimiento.Month;
            int edadenmeses = fin - inicio;
            return edadenmeses;
        }

        public int GenCodFichaSalud()
        {
            try
            {
                ListaFichasSalud = BEDE.Ficha_Salud.OrderBy(c => c.cod_ficha);
                int a = ListaFichasSalud.Last().cod_ficha;
                return a + 1;
            }
            catch { return 1; }
        }

        public int GenIDEmergecia()
        {
            try
            {
                ListaEmergencias = BEDE.Emergencia.OrderBy(c => c.id_emergencia);
                int a = ListaEmergencias.Last().id_emergencia;
                return a + 1;
            }
            catch { return 1; }
        }

        public int GenIDPagador()
        {
            try
            {
                ListaPagadores = BEDE.Responsable_Pago.OrderBy(c => c.id_responsable);
                int a = ListaPagadores.Last().id_responsable;
                return a + 1;
            }
            catch { return 1; }
        }

        public int GenCodConviviente()
        {
            try
            {
                ListaConvivientes = BEDE.Conviviente.OrderBy(c => c.cod_conviviente);
                int a = ListaConvivientes.Last().cod_conviviente;
                return a + 1;
            }
            catch { return 1; }
        }

        public int GenIDRetiro(int nroficha, int retirante)
        {
            int a = nroficha / 1000000;
            int b = retirante % 100;
            int c = DateTime.Now.Year % 1000;
            int d = ((a * 1000) + b) * 1000 + c;
            return d;
        }


        public int GenCodRecurso()
        {
            try
            {
                ListaRecursos = BEDE.Recurso.OrderBy(c => c.cod_recurso);
                int a = ListaRecursos.Last().cod_recurso;
                return a + 1;
            }
            catch { return 10000; }
        }

        public int GenCodConsumo()
        {
            try
            {
                ListaConsumos = BEDE.Consumo.OrderBy(c => c.cod_consumo);
                int a = ListaConsumos.Last().cod_consumo;
                return a + 1;
            }
            catch { return 1; }
        }

        public int GenComun()
        {
            try
            {
                ListaConsumos = BEDE.Consumo.OrderBy(c => c.comun);
                int a = ListaConsumos.Last().comun;
                return a + 1;
            }
            catch { return 1; }
        }

        public void BuscarEnGrid(string ValorBuscado, DataGridView grid)
        {
            if (grid.RowCount == 0)
            {
                MessageBox.Show("No se inició la busqueda indicada, pues la grilla de datos se encuentra vacía.", "GRILLA DE DATOS VACÍA.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                grid.ClearSelection();
                int i = 0;
                int encontro = 0;
                foreach (DataGridViewRow row in grid.Rows) // se hace una busqueda estricta del valor buscado
                {
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        try
                        {
                            if (cell.Value.ToString().Replace("·"," ") == ValorBuscado | cell.Value.ToString().Replace("·"," ").Contains(ValorBuscado.ToString()))
                            {

                                grid.Rows[i].Selected = true;
                                grid.CurrentCell = grid.Rows[i].Cells[0];
                                encontro++;
                            }
                        }
                        catch { }
                    }
                    i++;
                }
                //if (encontro == 0)  // se aplica un filtro de filas respecto del valor buscado.
                //{
                //    int contiene = 0;
                //    foreach (DataGridViewRow row in grid.Rows)
                //    {
                //        foreach (DataGridViewCell cell in row.Cells)
                //        {
                //            try
                //            {
                //                if (cell.Value.ToString().Replace("·", " ").Contains(ValorBuscado.ToString()))
                //                {
                //                    contiene++; 
                //                    grid.Rows[i].Selected = true;
                //                    grid.CurrentCell = grid.Rows[i].Cells[0];
                //                }
                //                else
                //                {
                //                    //grid.Rows[i].Selected = true;
                //                    //grid.CurrentCell = grid.Rows[i].Cells[0];
                //                    //grid.Rows.RemoveAt(i);
                //                    //grid.Update();
                //                }
                //            }
                //            catch { }
                //        }
                //        i++;
                //    }
                //    if (contiene == 0)
                //    {
                //        MessageBox.Show("No se encontró ningun registro relacionado con la información ingresada para realizar la busqueda. Por favor revise el valor indicado y repita el proceso.", "RESULTADO DE LA BUSQUEDA", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                //    }
                //    else
                //    {
                //        MessageBox.Show("No se encontró ningun registro que tubiera el dato ingresado. Se utilizó dicho dato para filtrar los registros.", "RESULTADO DE LA BUSQUEDA.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //    }
                //}
            }
        }
    }
}